class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int left, int right) {
        ListNode* dummpy=new ListNode(-1);
        dummpy->next=head;
        auto a=dummpy;
        for(int i=0;i<left-1;i++) a=a->next;
        auto b=a->next,c=a->next->next;
        for(int i=0;i<right-left;i++)
        {
            auto d=c->next;
            c->next=b;
            b=c,c=d;
        }
        a->next->next=c;
        a->next=b;
        auto r=dummpy->next;
        delete dummpy;
        return r;
    }
};